System and method for connecting, configuring and testing wireless devices and applications

ABSTRACT

A system, apparatus, and method are provided for connecting, configuring and testing wireless devices and applications. For example, one embodiment of wireless device for operation in a wireless network comprises a processor, a wireless module including a radio receiver and transmitter unit coupled to the processor, a graphical user interface (GUI) coupled to the processor, and a Connection Manager Module (CMM) including an Application Programming Interface (API) module, a Rules Engine Module, and a Rules Set Module, wherein the CMM manages a connection to a wireless network

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority forprior U.S. patent application Ser. No. 14/555,261 filed on Nov. 26, 2014which is a continuation of Ser. No. 14/477,614 filed on Sep. 4, 2014,issued as U.S. Pat. No. 8,937,910 on Jan. 20, 2015, which is acontinuation of U.S. patent application Ser. No. 13/544,497, filed onJul. 9, 2012, issued as U.S. Pat. No. 8,837,370, issued on Sep. 16, 2014which claimed the benefit of priority to U.S. Provisional PatentApplication No. 61/505,951, filed on Jul. 8, 2011, the entire contentsof which are incorporated herein by reference.

BACKGROUND

1. Field of the Invention

This invention relates generally to the field of wireless networksystems. More particularly, the invention relates to an improvedarchitecture and method for connecting, configuring and testing wirelessdevices including Machine-to-Machine (“M2M”) devices and applications.

2. Description of the Related Art

Unlike mobile phones, the primary purpose of a connected“Machine-to-Machine” (hereinafter “M2M”) device is not wirelesscommunications per se. Rather, wireless communication enhances the M2Mdevices. For example, connected navigation devices are firstlynavigation devices, but are enhanced by being connected; a securitysystem is not designed primarily for wireless communications, but isgreatly enhanced by wireless connectivity, etc. This means that, unlikewireless phones, a developer of a M2M connected device may not beprincipally a communications expert, rather he or she may be an expertof the M2M device application. However, M2M device application softwareneeds to drive the wireless communications as well. In essence, the M2Mdevice developer needs wireless communications expertise.

Many M2M connected devices tend to be specialized for a particularapplication. At first glance, this may appear to simplify the wirelesscommunications requirements. For example, some M2M connected devices maynot need to support voice. However, the opposite is often true, M2Mconnected devices have more complex communications requirements. Unlikewireless phones, most emerging M2M connected devices do not have a humanin charge of communication i.e., deciding when and how to connect, whichoperator to use, how to handle problems such as poor coverage, etc.Instead, the wireless communications of M2M connected devices musthappen automatically, reliably and economically despite network issuesor coverage issue. In the absence of direct human control, thesecommunications requirements must be met by the M2M device communicationssoftware.

Virtually all wireless carriers today offer both voice and dataservices. FIG. 10 illustrates a high level architecture of a wirelessservice provider 110 communicating with one wireless device 101 usingboth voice and data channels and communicating with a second wirelessdevice 103 using only a data channel. By way of example, many wirelesscarriers employ the Global System for Mobile Communications (“GSM”)standard to support voice traffic and the General Packet Radio Service(“GPRS”) standard to support data traffic over the same wirelessnetwork. In such a configuration, voice logic and circuitry 112 shown inFIG. 10 processes the GSM voice traffic and separate data logic andcircuitry 111 processes the GPRS data traffic. While some of theembodiments of the invention described below implement the GPRS standardfor data services and GSM for voice services, it should be noted thatthe underlying principles of the present invention are not limited toany particular wireless network protocol.

Using the data channel, wireless devices 101, 103 communicate withexternal servers 131 such as Web servers, instant messaging servers andemail servers via the Internet 120 (or other packet-based data network).One particular type of wireless device 103 configured for data trafficis the M2M device. M2M devices are deployed in application-specifictelemetry systems to collect data using sensors and transmit the data toa destination such as a server accessible over the Internet (or otherdata network). In the past, telemetry systems were the exclusive domainof very large well financed organizations. For example, large oil andgas companies and electric utilities, through the use of custom-built,proprietary data networks, were some of the first private organizationsto use telemetry. In recent years, however, the cost of access to publicwireless data networks has dropped, opening the door for new, costeffective M2M applications including, for example, fleet management,point-of-sale transactions, consumer electronics, healthcare monitoring,security, and surveillance, to name a few.

Even with the decreased cost for wireless data communication, however,the process of M2M application development and onboarding remainscomplex, time-consuming and inefficient, requiring a significant amountof manual effort on the part of a prospective M2M application developer.

In order to develop such applications, the prospective M2M applicationdeveloper may engage with the members of the sales team at the wirelessservice provider (typically cellular carriers or their resellers) andprovide detailed plans, business projections, and technical details justto get started. Once the process is initiated, each step along the waymay take a lengthy amount of time and manual effort on the part ofmultiple individuals inside the service provider organization. Forexample, it may require a significant amount of time to simply receiveusable Subscriber Identity Modules (“SIMs”) for testing purposes. Evenafter receiving usable SIMs from the service provider, the prospectiveM2M application developer still has the daunting task of designing thefinal product, and very little help is provided to iron out variousdefects/bugs introduced at this early stage.

Moreover, the sales team at the wireless service provider has verylittle, if any, visibility into how the prospective M2M applicationdeveloper is progressing, often resulting in time wasted chasingpoor-quality prospective M2M application developers. This process cantake many months (typically between 6-18 months) and during this time,both the prospective M2M application developer and the service providerwaste a lot of time and effort in these discussions.

Many wireless devices are built upon a communications module, or chipsetand stack. The module is effectively a wireless modem that allows adevice application to communicate over a wireless network throughGPRS/EDGE/UMTS data, voice, circuit switched data, SMS, etc. The deviceapplication itself uses the module whenever it wishes to send or receivedata through any of the bearers supported by the module. Most modulesare controlled from the device application directly by AT commands(Hayes command set), with many standardized commands specified in 3GPPstandards.

For example, there are commands to configure the module itself, commandsto control which network to select, commands for configuring, setting upand tearing down data sessions, commands for short message handling,etc. In addition, most module vendors have proprietary AT commands.Moreover, each command has a set of possible errors that must behandled, plus there may be unsolicited notifications from the module tothe software. Not only must the application developer be aware of thevarious commands and notifications, the application developer must havethe expertise to apply the commands correctly and handle thenotifications correctly. This may require the application developer tobe skilled in wireless communications.

To make matters manageable, some module vendors implement a developmentenvironment and interface that shields the developer from the details ofthe wireless communications. This has the advantage that the applicationdeveloper need not manage the various AT commands. However, it has thedisadvantage that the module vendor needs to independently handle allthe interactions with the wireless network. Unless the module vendor isalso in control of the wireless service subscription and network, it isnot feasible for the module to know how to handle the various real-worldscenarios. For example, the module does not know which operators are theservice provider's preferred roaming partners; the module does not knowwhat the service provider requires for re-tries when communications donot work, the module does not know how to report network diagnostics tothe network operator, etc.

Consequently, what is needed is a more efficient system and method whichaddresses the current inefficiencies associated with integratingwireless networks, M2M developers, wireless device developers, andwireless data applications. A solution may be to deploy a devicemiddleware layer that works in concert with the network serviceprovider, provides a simple interface to the application developer andmanages the module or chipset/stack on behalf of the device application.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained from thefollowing detailed description in conjunction with the followingdrawings, in which:

FIG. 1A illustrates a Connection Manager Module (CMM) comprising anApplication Programming Interface (API) module, a Rules Engine Module,and a Rules Set Module according to an embodiment of the invention.

FIG. 1B illustrates a method for integrating the CMM with a M2M deviceapplication by utilizing the platform-independent CMM API according toan embodiment of the invention.

FIG. 1C illustrates an example rules set according to an embodiment ofthe invention.

FIG. 2 illustrates a system architecture according to one embodiment ofthe invention.

FIG. 3 illustrates one embodiment of a USB test device sent toprospective customers.

FIG. 4 illustrates a computer-implemented method for connecting,configuring and testing wireless devices.

FIGS. 5 a-b illustrate one embodiment of a graphical user interface forconnecting, configuring and testing wireless devices.

FIGS. 6 a-b illustrate one embodiment of a trial order Website forcollecting user and device data for wireless trial devices.

FIGS. 7 a-c illustrates one embodiment of a Web-based graphical userinterface employed at a Control Center.

FIG. 8 illustrates one embodiment of a Web-based graphical userinterface employed by a sales management system.

FIG. 9 illustrates one embodiment of a computer-implemented method forestablishing new user accounts, testing trial devices and managing userdata.

FIG. 10 illustrates a Prior Art high level architecture of a wirelessdata and voice system.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Described below is a system and method for designing and integrating newwireless data applications on a cellular network. Throughout thedescription, for the purposes of explanation, numerous specific detailsare set forth in order to provide a thorough understanding of thepresent invention. It will be apparent, however, to one skilled in theart that the present invention may be practiced without some of thesespecific details. In other instances, well-known structures and devicesare shown in block diagram form to avoid obscuring the underlyingprinciples of the present invention.

The embodiments of the invention described below reduce the time,complexity, and cost associated with developing and deploying wirelessdevice/applications, or more specifically, M2M wirelessdevice/applications. In particular, in one embodiment, a wirelessdevice/M2M device-based Connection Manager Module (CMM) (i.e. a wirelessdevice/M2M device middleware layer) and method are employed with guidesfor quality design, efficient techniques for testing, configuring, andtroubleshooting new and existing wireless device/M2M wirelessdevice/applications. The CMM relieves the wireless device/M2M wirelessdevice/application of the complete responsibility of managing thewireless module. In another embodiment, a wireless system is describedfor testing, configuring, and troubleshooting new and existing wirelessdevice/M2M wireless device/applications that incorporates the wirelessdevice/M2M device-based CMM in communication with a network server basedControl Center (CC) platform. The CMM may act independently or inconcert with the Control Center (CC) platform.

Various embodiments of the invention will refer to wireless devices, M2Mwireless devices, cellular devices, USB wireless devices, mobiledevices, etc. It will be apparent, however, to one skilled in the artthat the invention may be practiced with any number of wireless ormobile devices. For example, a wireless or mobile device can be acellular telephone, a smartphone with data transfer and messagingcapability, a tablet computer, a personal digital assistant (PDA), avideo-camera, a gaming device, a global positioning system (GPS), ane-Reader, a Machine-to-Machine (M2M) device (i.e., anapplication-specific telemetry device that collects data using sensorsand transmits the data to a destination such as a server over anetwork), a hybrid device with a combination of any of the abovefunctionalities, or any other wireless mobile devices capable of sendingand receiving voice, data and text messages. Specific references may bemade to M2M devices; however, the following discussion applies to allwireless/mobile devices.

Developing an efficient and robust wireless M2M device/applicationrequires detailed and intimate knowledge of the wireless module ormodem, AT commands (Hayes command set), network operations, and changingnetwork conditions. The CMM may be embedded software that controls thewireless module/modem, ensures that a connection is established andmaintained, enables external network-initiated connections, and providesremote control options and diagnostic functions (e.g. via an externalControl Center platform). The use of CMM greatly simplifies the wirelessconnectivity portion of a M2M device/application development.

The CMM consists of platform-independent software and platformadaptation components. FIG. 1A illustrates the CMM 150 comprising anApplication Programming Interface (API) module 152, a Rules EngineModule 154, and a Rules Set Module 156. Also shown are a wirelessmodule/modem 110 and the Control Center Platform 180.

The API module 152 provides an interface to M2M device mobileapplication 160 that allows M2M developers to rapidly develop and deploymobile applications without detailed knowledge of wireless networking orAT commands. Ultimately, this results in a faster time to market and arobust wireless solution.

The CMM 150 platform-independent software manages all communicationsutilizing the Rules Engine Module 154 which comprises a genericconfigurable state machine. The CMM 150 also utilizes the Rules SetModule 156 that provides connection logic that controls the wirelessmodule/modem 110. Rules sets may be created, revised, updated, andtested and can be distributed remotely by various means, includinggeneration and distribution by the Control Center platform 180.

The Rules Engine Module 154 including the configurable state machine maybe configured by rules set files that direct the wireless module 110 insetting up and maintaining connections. Rules sets may be maintained anddistributed from Control Center 180. Control Center 180 may create rulessets specific to each of the major wireless modules. Rules sets may alsobe obtained from alternative sources other than Control Center 180. Acollection of rules in the rule set drives the state transitions eitherunconditionally or in response to events. Events are raised based onwireless module 110 responses, connectivity changes, and the action ofvarious timers and counters defined in the rules set. Outputs specifiedon state transitions result in AT commands to drive the behaviour of thewireless module 110.

The state machine is defined by the rules set, which specifies the statetransition rules, and the actions to be taken in the event of radionetwork errors. If desired, there can be different Rules Sets fordifferent types of applications (e.g. stationary vs. mobile device,roaming vs. non-roaming device, etc.).

FIG. 1B illustrates an example rules set according to an embodiment ofthe invention. The rules set contain communications logic/flow includingbackoff logic. The rules set establishes network connections, interpretsresponses from the module/modem or network, eliminates aggressivewireless device behaviour, and may be module/modem specific.

As shown in FIG. 1B, the rules set is comprised of a collection ofstates, rules, timers and counters. The rules set is described by abinary file with a proprietary format. Rules sets may be very flexibleand can define a wide range of logic to control the operation of themodem. There may be different strategies for managing the connectivityof a modem. For instance, one strategy might be to obtain a connectionregardless of how long it takes. Another might be to obtain a connectionas quickly as possible. Rules sets allow wide variation in the systemlogic to accommodate a large range of strategies.

States define arbitrary states in the rules engine that may representsystem states. Each state is defined by a name that is referenced byrules. Events are created by modem responses or expiration of timers andcounters. Modem responses can be either normal or error responses to ATcommands.

Timers are started on events and expire after their timeout value,creating timeout events. Timers can be defined to operate with a“backoff” mechanism, wherein the timeout period may increase after eachexpiration. The utilization of timers may prevent “aggressive” behaviourof the system where operations are retried frequently, causingunnecessary network traffic. Another feature of the timers israndomization, where part of the timeout value can be a random value.The utilization of randomization may prevent a large number of devicesfrom attempting operations on the network at the same time. In oneembodiment, a formula for calculating the next expiration value, T2,from the current value, T1 is:

T2=C+n*T1

Where C is a constant and n is a multiplier. If n is a positive value,the current timeout value is multiplied by n and added to C. If n is anegative number, a random value between 0 and the absolute value of n iscalculated.

Counters count events that occur in the system to allow the rules setlogic to take action after a fixed number of events.

Rules define the transition from one state to another. They aretriggered by events and create outputs on the transitions. These outputscan be modem commands, or starting or cancelling timers or counters. Asthe logic transitions from state to state within the rules set, theoutputs' drive the modem to perform the actions that affect modemconnectivity.

The CMM and rules set are flexible in terms of how they handle thedifferent radio network error and reject codes. For example, an eventhandled by the rules set may be a situation where the wireless device,while involved in or attempting a data session, receives a packet dataprotocol (PDP) reject cause code 33 and the CMM continues to receive PDPactivation requests from the upper device application layer. CMM canback-off and retry on the same carrier, back-off then reset the module,attempt to connect on another carrier or stop attempting.

In another example, if the wireless device receives a GPRS attach rejectwith cause code 17, the CMM/rules set will instruct the modem to attemptto connect on another carrier (e.g. roaming partner).

Control Center 180 has the ability to “push” rule set files to M2Mdevices on the network. Control Center 180 may initiate this function bysending an SMS message to CMM 150. Upon receiving the message, CMM 150establishes an IP connection via the wireless data network, retrievesthe specified rules set, and disconnects. CMM 150 may utilize a commandchannel for such communication. CMM 150 may then restart/reboot usingthe new rules set. If CMM 150 encounters any errors in loading the newrules set, CMM 150 may revert to the last known good rules set.

The CMM 150 may be integrated with the M2M device application byutilizing the CMM API 152. FIG. 1C illustrates a method for integratingthe CMM 150 with the M2M device application by utilizing theplatform-independent CMM API 152. The integration steps include in step190 embedding a CMM API.h file in the M2M wireless mobile application160 source code. This file contains all of the type definitions andfunction prototypes that will need to be referenced. In step 192embedding a call back function in M2M wireless mobile application 160source code. This function will be called by the CMM 150 wheneverinformation is available. All data is delivered asynchronously usingthis mechanism. Network initiated connection requests are alsocommunicated using the call back. The M2M application 160 source codemust complete the connection operations by calling CMM 150 in responseto these notifications. In step 194, initializing the CMM 150 by addinga call to CMM Open ( ). In step 196, utilizing the API 152 to connect,disconnect, request information, or send SMS messages. In step 198,Calling CMM Close ( ) to release the resources used by the API 152.

The CMM 150 interfaces with the M2M mobile device application 160through the API 152. The API 152 is a platform-independent interfaceconsisting of methods for connecting, disconnecting, queryingparameters, and sending SMS messages. The API 152 allows an M2Mdeveloper to design and implement a M2M mobile device applicationutilizing existing operating systems such as Windows CE, VxWorks, MeeGo,and QNX, etc. In one embodiment, M2M mobile applications 160 written inC or C++ can utilize the API 152 directly. In another embodiment, awrapper may be created for M2M mobile applications 160 written in otherprogram language in order to utilize the API 152. The API 152 sendsinformation to the M2M application 160 through an asynchronousnotification mechanism. The API 152 may send the informationsynchronously as well. The M2M application 160 registers a call backfunction and the CMM 150 calls this function any time there isinformation to communicate. This mechanism is used to deliver statusmessages from the CMM 150, connection status information, and mobileterminated SMS messages.

The CMM 150 drives the wireless module 110 using all necessary ATcommands and responses. In addition, CMM 150 provides and executes logicto handle the various wireless module 110 and network error situationsin ways that are compatible with the wireless network.

The CMM 150 ensures that the M2M device connects to the wireless networkwhen necessary and stays connected. The CMM 150 manages intelligentre-tries when there are network related problems, selecting alternativenetworks when needed.

The CMM 150 may also enable alternative network selection in regards tointernational roaming which may be inherently less reliable than anative service. In particular, there is the so-called “stuck SIM”problem, an inherent weakness of GSM that can allow a device to remainon a network that can provide GSM service, but is temporarily unable toprovide GPRS service. In this situation, the CMM 150 may ensure that analternative network is selected and significantly improve thereliability of international roaming.

The CMM 150 also provides a valuable diagnostic function. The CMM 150monitors the quality of wireless communications and makes theinformation available on demand for diagnostics purposes. The CMM 150remotely monitors performance of network data connections, checks forerrors, and checks the signal strength at the device.

The CMM 150 provides the ability to remotely cause the wireless deviceto connect or disconnect. Control Center 180 may also be used toinitiate a connect or disconnect by sending SMS messages to CMM 150. CMM150 may use the call back mechanism to notify the wireless application160 of the request and the wireless application may complete the requestby making API 152 calls to CMM Connect or CMM Disconnect.

The CMM 150 maintains log files that record the activity of the CMM 150.These log files may be uploaded and viewed in Control Center 180.Control Center 180 may initiate the request to upload the logs bysending an SMS message to CMM 150. Upon receiving the SMS message, CMM150 may establish an IP connection via the wireless data network, uploadthe log files to Control Center 180 and then disconnect.

A system architecture according to one embodiment of the invention isillustrated in FIG. 2. In this embodiment, a Control Center 280 (such asControl Center 180 of FIG. 1) is communicatively coupled to a testcomputer 250 over a wireless network 230 operated by a wireless serviceprovider. The Control Center 280 may also be coupled to the testcomputer 250 through an Internet connection 260, if one is available.This Internet connection is sometimes referred to below as a “directchannel” between the Test Computer and the Control Center 280. TheControl Center 280 includes a plurality of servers for implementing thevarious functional modules 204-205, 220-222, 270 illustrated in FIG. 2(e.g., by executing program code designed to perform the variousfunctions). The Control Center 280 also includes a plurality ofdatabases 210-212 for storing data related to users and wirelessdevices.

In one embodiment of the invention, a prospective wireless data customeror M2M developer visits a trial order Website 201 and requests trialSIMs through a Web-based user interface, certain embodiments of whichare illustrated in FIGS. 6 a-b. As shown in FIG. 6 a, the Web-based userinterface includes a drop-down menu 601 containing a selectable list ofwireless modules supported by the wireless service provider.

In the illustrated embodiment, the service provider may be AT&T and thewireless modules include those wireless modules supported on the AT&Tdata network. For example, wireless modules may include a CinterionMC55i, a Telit GE-865, a Siena Q2426, etc. However, the underlyingprinciples of the invention are not limited to any particular serviceprovider. Other information entered in the Web-based user interfaceinclude contact information 602 (user name, address, etc.), accountinformation 603 (for specifying a user name and password for a new useraccount), a referral code 604, payment information 605 (e.g., creditcard data), billing information 606, and shipping information 607. Inone embodiment, the Website 201 includes data verification logic toensure that the data entered in the various data fields is in thecorrect data format. In addition, although not shown in the figures, thetrial order Website 201 includes a connection to a credit card issuersystem to verify the credit card payment information entered by theuser.

While various different platforms may be used to implement the trialorder Website (and other Web-based user interface features describedherein), in one embodiment, the Website is an Apache Tomcat web serverrunning on Linux with software programmed in Java using an Oracledatabase.

Upon entering all requested information, the Website 201 verifies thetransaction and transmits the user and device data to a registrationsystem 205. In one embodiment, the registration system 205 exposes anApplication Programming Interface (API) to the trial order Website 201and the trial order Website communicates data to the registration systemusing the API. The interactions between the Web site and theregistration system may be formatted as a Web services-basedtransaction, with user data embedded in one or more Extensible MarkupLanguage (“XML”) files using the SOAP protocol. However, various otherdata communication protocols may be employed while still complying withthe underlying principles of the invention.

In response to receipt of the user data, the registration system 205establishes a new user account and executes a series of databaseoperations to open new record(s) in a user database 210 and an accountsdatabase 211. For example, the user's name and contact information maybe stored in the user database 210 and a new account may be opened forthe user in the accounts database 211 (including an account number,wireless device identification codes, etc.). In one embodiment, thevarious databases shown in FIG. 2 are not actually separate databasesbut, rather, separate data structures (e.g., tables) within a singlerelational database.

In one embodiment, a device management system 204 automaticallyprovisions trial SIMs on behalf of the user/developer within a wirelessdevice database 212. As part of the provisioning process, anidentification code for each trial SIM is automatically associated withdata services offered by the wireless service provider. Each SIMincludes a unique serial number, international unique number of themobile user (“IMSI”), security authentication and ciphering information,temporary information related to the local network, a list of servicesto which the user is provided access and password data. In oneembodiment, the SIMs are initially provisioned with limited “trial”functionality for application development and testing purposes.

For example, in one embodiment, data transmission thresholds are set tolimit the amount of data which the trial SIMs may utilize during thetesting period. In addition, in one embodiment, the SIMs are provisionedto operate only for a specified trial period. At the end of the trialperiod, the SIMs are automatically disabled and/or de-provisioned andwill no longer be permitted access to the wireless service providernetwork.

As part of the provisioning process, the SIMs are automaticallyregistered with the Home Location Register (“HLR”) 221 of the wirelessservice provider of wireless network 230. An HLR is a central databasecontaining details of each mobile data subscriber authorized to use thewireless network 230. While the HLR 221 is illustrated in FIG. 2 withinthe domain of the Control Center 280, in one embodiment, the HLR 221communicates with a central HLR maintained by the wireless serviceprovider. Alternatively, in one embodiment, the entire HLR is maintainedby the service provider and the service provider is provided access tothe data stored within the wireless device database 212 during theprovisioning process. The underlying principles of the invention are notlimited to any particular HLR/database configuration.

Following the automatic provisioning of the trial SIMs and registrationof the user, the owner/operator of the Control Center 280 may send awireless M2M development kit to the user containing the trial SIMs andan M2M test device with application software for testing andconfiguration.

In an alternative embodiment, the owner/operator of the Control Center280 may provide access to application software/middleware such as theCMM 150 shown in FIG. 1A for testing and configuration specificallydesigned for a user/developer who wishes to implement his/her own M2Mtest device. In this case, the user/developer may be utilizing anywireless module (i.e. wireless module 110) supported on the serviceprovider's data network. Whether the M2M test device is provided by thewireless service provider to the user/developer with preloadedapplication software for testing and configuration or whether theuser/developer acquires the application software/middleware in the formof CMM 150 for his/her own M2M test device, the principle operation ofthe various embodiments of the invention are similar. The acquisition ofthe CMM 150 as an alternative embodiment will be further describedbelow.

As illustrated in FIG. 3, one embodiment of the test device comprises awireless device 301 with a Universal Serial Bus (“USB”) interface 312for connecting to the USB port of a standard computer system 250.However, the underlying principles of the invention are not limited toany particular interface type. Other interface types which may be usedin lieu of USB include, by way of example and not limitation, IEEE 1394b(“Firewire”) and eSATA. In one embodiment, the computer system 250 is aWindows-based computer with an Intel® Core-2 Duo®, Core i7®, or similarx86-based processor, 2-4 GBytes of DDR2 or DDR3 memory, and a 250 GByte(or larger) Serial ATA hard drive. Various other computer configurationsmay also be used while still complying with the underlying principles ofthe invention. For example, in one embodiment, the test computer 250 isa Macintosh® computer system such as a Macbook Pro® or Mac Pro® desktop.Reference will be made to USB wireless device 301, however, thefollowing description may be applicable to any cellular device, wirelessdevice, or M2M device with any applicable interface types.

One embodiment of the wireless USB device 301 includes a flash memory304 for storing testing and monitoring program code 305. Alternatively,flash memory 304 may store CMM 150. The flash memory 304 may beintegrated directly within the device or may take the form of a memorycard coupled to a memory card slot within the USB device (e.g., a SecureDigital card slot). In one embodiment, the USB device 301 includes awireless modem module 310 pre-configured to communicate over thewireless network and a SIM interface into which the pre-provisionedtrial SIMs may be connected for configuring, testing and debuggingwireless applications. Once inserted into the SIM interface, the SIMcard 311 authorizes the wireless USB device 301 (hereinafter wirelessdevice 301) to communicate over the wireless service provider's network230 (according to the provisioning parameters associated with the SIMcard). In one particular embodiment, the wireless device 301 is a SierraWireless Compass 885 or 888 which include a wide-area modem for 7.2 Mbpsfor HSPA networks. Information related to these devices can be found athttp://www.sierrawireless.com/.

In one embodiment, when the wireless device 301 is coupled into the USBport of the test computer 250, auto-installation logic (e.g., anautomatic installation script) is executed and (upon authorization bythe end user), the testing and monitoring program code 305 or equivalentfunctionality of CMM 150 is automatically installed and executed on thetest computer 250.

In one embodiment, the wireless device 301 (or equivalent functionalityof CMM 150) is preconfigured with the Access Point Name (“APN”)—i.e.,the network address used to identify a Gateway GPRS Support Node(“GGSN”) 222 at the Control Center 280. During the testing andconfiguration process, all wireless cellular communication with theControl Center 280 is routed through the GGSN 222. In addition to theAPN, the wireless device 301 (or equivalent functionality of CMM 150) isalso configured with the hostname of the Control Center diagnosticssystem 270, which includes one or more test servers used for IP traffictesting.

In one embodiment, the provisioning parameters for each SIM includes acommunication profile specifying the wireless services allocated to theSIM (e.g., whether Short Message Service (“SMS”) or voice functionalityare permitted, roaming restrictions, etc.). The provisioning parametersalso include the rate plan associated with the SIMs including thefinancial parameters (i.e., the price), the amount of data permittedunder the financial parameters, overage rates, etc. As previouslydescribed, in one embodiment, each trial SIM is allocated a limitedamount of data usage for testing and troubleshooting purposes, and isnot provided with voice or SMS communication services. In oneembodiment, even though the SIM is not provisioned for voice service,the SIM is provided with GSM functionality in order to be authorizedwith GSM network, prior to connecting to the GPRS network.

As mentioned above, the testing and monitoring program code 305 orequivalent functionality of CMM 150 automatically establishes aconnection with the Control Center 280 over the wireless cellularnetwork 230 and/or a direct channel through the Internet 260 andexecutes a series of automated tests, thereby saving the enduser/developer a significant amount of time and effort in the process ofdeveloping new wireless applications. Moreover, because the SIMsreceived by the end user/developer are pre-provisioned and the USBdevice (or equivalent functionality of CMM 150) is pre-configured by theControl Center 280, the cellular device 240 is capable of establishing awireless connection with minimal effort on the part of the prospectivecustomer.

One embodiment of a computer-implemented method for testing, monitoring,and debugging the wireless device 301 is illustrated in FIG. 4 and aseries of screenshots of a graphical user interface (“GUI”) employed bythe testing and monitoring program code 305 is illustrated in FIGS. 5a-b.

Turning initially to the method of FIG. 4, at step 401 the testing andmonitoring program code 305 (or equivalent functionality of CMM 150)tests the provisioning of the wireless device 301 with a particulartrial SIM installed. In one embodiment, this involves checking thefollowing parameters to determine whether traffic is allowed using thegiven SIM: (a) the SIM's status must be “Activation Ready” or“Activated;” (b) the SIM must not have been blocked due to excessivesignaling activity; and (c) the SIM must not have been blocked due toexcessive data usage beyond user-defined overage limits.

Assuming that the foregoing conditions are met, the wireless device 301with the SIM passes the provisioning test step 401. A test failureindicates that one or more of the foregoing conditions were not met. Forexample, if the SIM's status is not “Activation Ready” or “Activated,”or if the SIM has been blocked due to excessive signaling or excessivedata usage, then the wireless device 301 with the SIM will fail theprovisioning step 401. In response, one embodiment of the testing andmonitoring program code (or equivalent functionality of CMM 150)performs troubleshooting operations to fix the problem and/or notifiesthe user/developer of troubleshooting steps to be taken. For example, ifthe SIM's status is not “Active” or “Activation Ready” then the testingand monitoring program (or equivalent functionality of CMM 150) maycheck to ensure that the SIM's status is correctly reflected in thewireless device database 212.

In one embodiment, CMM 150 utilizes the Rules Set Module 156 thatprovides connection logic that controls the wireless module/modem110/310. Rules sets may be created, revised, updated, and tested and canbe distributed remotely by various means, including generation anddistribution by the Control Center platform 180/280.

The Rules Engine Module 154 including the configurable state machine maybe configured by rules set files that direct the wireless module 110/310in setting up and maintaining connections. Rules sets may be maintainedand distributed from Control Center 180. Control Center 180 may createrules sets specific to each of the major wireless modules. A collectionof rules in the rule set drives the state transitions eitherunconditionally or in response to events. Events are raised based onwireless module 110/310 responses, connectivity changes, and the actionof various timers and counters defined in the rules set. Outputsspecified on state transitions result in AT commands to drive thebehaviour of the wireless module 110. FIG. 1C illustrates the examplerules set according to an embodiment of the invention.

At step 402, the testing and monitoring program code 305 (or equivalentfunctionality of CMM 150) tests the wireless device and trial SIM. Inone embodiment, this test involves determining whether the given USBdevice and SIM are available on the network based on one of two factors(whichever comes first): (a) reporting from the device via “directchannel” diagnostics, or (b) any detected wireless signaling activity.With respect to (a), the direct channel comprises the direct connectionof the test computer 250 to the diagnostics system 270 through theInternet 260.

In one embodiment, the testing and monitoring program code 305 (orequivalent functionality of CMM 150) reports its status to thediagnostics system 270 periodically through the direct channel. Thesereports may include local wireless statistics such as signal strengthand data usage. If the device is unable to connect wirelessly due tolack of coverage or low signal strength, the direct channel providesvaluable diagnostic information that would otherwise be unavailable tothe diagnostics system.

If a direct channel connection or wireless connection are detected, thenthe wireless device and SIM pass the device/SIM testing step 402illustrated in FIG. 4. In one embodiment, if neither connection isdetected, then troubleshooting steps are implemented includinginstructing the user/developer to confirm that the SIM card 311 isinserted properly and determining whether wireless coverage exists atthe test location. For example, in one embodiment, the Control Center280 and/or the testing and monitoring program code 305 (or equivalentfunctionality of CMM 150) maintains a database of service coveragelocations. If the current location of the wireless device is outside ofthe coverage location, then the testing and monitoring program code 305(or equivalent functionality of CMM 150) may notify the user thatcoverage is not available at the current location. The user's currentlocation may be determined manually (e.g., by requesting the currentaddress or zip code for the user) or automatically (using GPS if theuser's test computer is equipped with GPS capabilities).

The user may also be asked to verify that the wireless device 301 hasadequate signal strength (e.g., greater than 1 bar or a RSSI of 5 ormore); verify that the device's antenna is properly connected; verifythe wireless device 301 is configured with the proper frequency bands(850 & 1900 MHz for the US, and 900 & 1800 MHz for Europe); and/orverify whether other wireless devices (e.g., GSM/GPRS cell phones) inthe proximity are working. Upon verification of one or more of the abovevariables, the testing and monitoring program code 305 (or equivalentfunctionality of CMM 150) may re-execute step 402 in FIG. 4 to re-testthe USB device/SIM card.

At step 403, the testing and monitoring program code 305 (or equivalentfunctionality of CMM 150) tests the wireless device's wireless networkconnection. In one embodiment, this involves checking the Home LocationRegister 221 to determine whether there has been any recent wirelesssignaling from the wireless device 301. There are three types ofwireless signaling which may be detected: a GSM authorization request; aMobile Switching Center (“MSC”) Location Update; and/or a Serving GPRSSupport Node (“SGSN”) Location Update. The presence of any of thesesignaling events indicates that the device has successfully registeredon the GSM (voice) network and/or the GPRS (data) network. As such, ifany of these signaling events are detected, the testing and monitoringprogram code 305 (or equivalent functionality of CMM 150) indicates thatthe wireless device has passed the wireless network testing step 403 inFIG. 4.

If none of these signaling events are detected, then the testing andmonitoring program code 305 (or equivalent functionality of CMM 150) mayinitiate one or more troubleshooting operations. For example, in oneembodiment, the Control Center 280 may transmit an SMS message to thewireless device 301. If the SMS message is successful, then GSM serviceis available (but perhaps not the GPRS service). In addition, thetesting and monitoring program code 305 (or equivalent functionality ofCMM 150) may check the GSM and GPRS registration using AT commands sentto the wireless modem 310 (e.g., to verify GSM registration, the“AT+CREG?” command should return “+CREG:x,1” or “+CREG:x,5”; where “x”is 0, 1 or 2; to verify GPRS registration, the “AT+CGATT?” commandshould return “+CGATT:1” and “AT+CGREG?” should return “+CGREG:x,1” or“+CGREG:x,5”; where “x” is 0, 1 or 2). Finally, the testing andmonitoring program code 305 (or equivalent functionality of CMM 150) mayperform a soft reset of the wireless device 301 or the end user may beprompted to perform a hard reset of the wireless device 301.

Returning to FIG. 4, at step 404, the testing and monitoring programcode 305 (or equivalent functionality of CMM 150) tests the IP/Internetconnection of the wireless device 301. In one embodiment, this testincludes two parts:

(a) Checking the Gateway GPRS Support Node (“GGSN”) to determine whetherthe wireless device 301 has initiated a Packet Data Protocol (“PDP”)session. PDP session context data will be present in the Gateway GPRSSupport Node (GGSN) when the wireless device 301 has established anactive session. Consequently, the existence of a PDP session dataindicates that the device was able to resolve the Access Point Name(“APN”) to a GGSN and start a PDP session with that GGSN.

(b) Running test traffic from the wireless device 301 to a ControlCenter test server within the diagnostics system 270 and checking theGGSN for real-time IP traffic statistics. This test fails if the devicehas no upload/download bytes at all (which suggests a problem with theUSB device's IP capabilities) or if it has upload bytes but no downloadbytes (which suggests a problem reaching the test server).

Assuming that the above conditions are met, the testing and monitoringprogram code 305 (or equivalent functionality of CMM 150) confirms thatthe wireless device 301 has passed the IP/Internet test step 404. Ifthese conditions have not been met, the possible reasons include: theAPN is not configured properly; the USB device is unable to open portsor sockets; the IP address is incorrect; and/or the IP data cannot flowbi-directionally.

In one embodiment, the testing and monitoring program code 305 (orequivalent functionality of CMM 150) automatically performs thefollowing troubleshooting operations and/or instructs the user/developerto manually perform these operations:

(a) Check whether the whether device 301 has been configured with thecorrect APN.

(b) Verify that all sockets and ports on the wireless device 301 areclosed and free to use.

(c) Verify that the destination IP address programmed in the wirelessdevice 301 is accurate.

In one embodiment, the results of all of the foregoing tests andtroubleshooting steps are stored within a diagnostics database 275. Ifnecessary, the results may be reviewed by personnel within the ControlCenter 280 to provide guidance to the prospective customer whentroubleshooting new wireless applications. In one embodiment, localenvironment statistics are transmitted to the diagnostics database 275such as wireless signal strength of the trial device. The localenvironment statistics (and other test data) are then usable forperforming diagnostics for the trial device and/or aggregated acrossdifferent trial devices to construct an estimate of the conditions in agiven geographical area.

One embodiment of the invention is implemented on an independent,stand-alone wireless device such as a Windows Mobile device.Alternatively, embodiments of the invention may be implemented on acellular telephone, a smartphone with data transfer and messagingcapability, a tablet computer, a personal digital assistant (PDA), avideo-camera, a gaming device, a global positioning system (GPS), ane-Reader, a Machine-to-Machine (M2M) device (i.e., anapplication-specific telemetry device that collects data using sensorsand transmits the data to a destination such as a server over anetwork), a hybrid device with a combination of any of the abovefunctionalities, or any other wireless mobile devices capable of sendingand receiving voice, data and text messages. In these embodiments, thetrial SIM may be installed and the testing and monitoring software orCMM 150 may be executed directly on the independent mobile device (e.g.,loaded from non-volatile to volatile memory and executed by the mobiledevice's processor). Consequently, there is no need for an additionalcomputer system in this implementation.

Moreover, in one embodiment, the testing and monitoring software or CMM150 automatically checks for updates prior to executing the varioustests and troubleshooting steps described above. The updates may includepatches and additional tests/troubleshooting operations. If an update isavailable, the testing and monitoring software automatically installsthe update (upon confirmation by the end user) and then executes thetests.

FIGS. 5 a-b illustrate a graphical user interface (“GUI”) employed bythe testing and monitoring program code 305 or CMM 150 with graphicalelements 501-504 corresponding to steps 401-404 illustrated in FIG. 4.Each graphical element provides an indication of progress of itscorresponding step. For example, in FIG. 5 a, graphical element 501corresponding to the provisioning step 401 generates a graphicalprogress bar to show the progress of the provisioning step.

As each step in the test script is completed, an indication of theresults is provided within each graphical element 501-504. For example,in FIG. 5 b, a “Passed” indication is provided within graphical element501 (to indicate that the wireless device passed the provisioning step401) and a “Failed” indication is provided within graphical element 502(to indicate that the wireless device failed the device/SIM step 502).In the event that the wireless device fails one of the test steps, ascrollable window 510 is generated within the graphical elementcorresponding to the failed step to provide troubleshooting informationto the end user. For example, in response to the failure of thedevice/SIM card test, troubleshooting instructions are provided to theend user to help determine the problem.

As illustrated in FIG. 2, one embodiment of the Control Center 280includes a Web server 250 which dynamically generates a Web-basedgraphical user interface for monitoring and managing wireless deviceswhich have been added to the system (e.g., following the testing andtroubleshooting techniques described above). Using the Web-based GUI,customers and potential customers are provided with comprehensive accessto all data stored in the wireless device database 212 and thediagnostics database 275. This information may be used to monitor,manage, and troubleshoot wireless devices. As shown in FIG. 5 b, in oneembodiment, a link 520 to the Web server is provided in the testingwindow to provide quick access to the Control Center Web server 250.

As illustrated in FIGS. 7 a-c, in one embodiment, the user/developer isinitially provided with a “tour” of the Control Center 280 Website. Thetour includes a sequence of informational windows 703-705 identifyingvarious aspects of the Control Center, with certain features of theControl Center GUI displayed behind the informational windows. As shownin FIGS. 7 a-c, a series of selectable tabs 701 are provided at the topof the Control Center GUI to enable a customer or potential customer toefficiently identify information related to the customer's wirelessdevices. In the specific embodiment illustrated, the tabs includewireless devices, billing information, device coverage information,account information, alerts, support, and reports.

In the embodiments show in FIGS. 7 a-c, the “devices” tab is selected,thereby generating a table containing information related to each of thecustomer's wireless devices. Specifically, as indicated in columnheadings 702, the information includes the SIM identification code foreach wireless device (“ICCID”). The status associated with each wirelessdevice (e.g., an indication as to whether the SIM device has beenactivated), a device ID code, an indication as to whether the device iscurrently connected to the Control Center, the date each wireless devicewas added to the system, and a modem ID uniquely identifying thewireless modem 310 used on each device. Links are also provided toprovide access to diagnostics for each wireless device and a “spotlight”feature which provides detailed connectivity information for each device(e.g., when and where different connectivity events occurred). The“spotlight” feature is described in Co-Pending patent application Ser.No. 12/387,962, entitled “Virtual Diagnostic System for WirelessCommunications Network Systems”, filed on May 7, 2009, which is assignedto the assignee of the present application and which is incorporatedherein by reference.

Once a trial wireless device is preconfigured and pre-provisioned asdescribed above, a sales management team at the Control Center 280 isprovided with access to the user, account, and device databases 210-212through the sales management system 220 illustrated in FIG. 2. FIG. 8illustrates a Web-based graphical user interface employed by oneembodiment of the sales management system 220 in which a “salesmanagement” tab is provided to access the sales management data. In FIG.8, the sales management tab is selected, thereby generating a table witheach row representing a different account and each column containingdifferent variables associated with each customer or potential customer.

Specifically, as indicated in column headings 802, the informationprovided under the sales management tab includes the account name andidentification code, the lead qualification state (used to classifywhether the trial has the potential to become a paying customer—e.g.qualified, unqualified, potential at later date, etc.), the industry ofthe customer (e.g., boating, ships, retail electronics, fleetmanagement, healthcare, etc.), the device types employed by the customer(e.g., cell phones, M2M devices, etc.), the launch timeframe indicatedby the customer, the expected deployment numbers (e.g., number of M2Munits), and a referral code. It should be noted that various additionalor alternative data may be provided to the sales management team via thegraphical user interface while still complying with the underlyingprinciples of the invention.

A computer-implemented method according to one embodiment of theinvention is illustrated in FIG. 9. Various aspects of the method havealready been described with respect to the system shown in FIGS. 2-3.However, the underlying principles of the computer-implemented methodare not limited to any particular system configuration. In fact, thecomputer-implemented method illustrated in FIG. 9 may be implemented onvirtually any computing platform.

As indicated at step 901, a prospective wireless data customer initiallyrequests trial SIMs via a Web-based user interface by entering contactinformation, billing information and information related to theprospective customer's wireless data requirements. At 902, the SIMs areautomatically pre-provisioned and the trial device is pre-configured tooperate on the wireless data network. At 903, trial SIMs, hardware, andsoftware are sent to the prospective customer to enable the prospectivecustomer to efficiently develop a wireless data solution. In oneembodiment, the trial hardware includes a test device with a computerinterface (e.g., a USB interface) and the trial software comprises atesting and monitoring application or CMM 150 configured to beautomatically installed and executed when the test device is pluggedinto the interface of a prospective customer's computer system.

At 904, the test software or CMM 150 executes an automated test scriptto perform a plurality of tests on the wireless device with a particularSIM installed. In one embodiment, the tests include (1) a provisioningtest to confirm that the trial device/SIM are correctly provisioned forthe wireless network; (2) a device/SIM card test to test the operationof the trial device and SIM; (3) a wireless network test to confirmoperation of the trial device on the wireless network; and (4) anIP/Internet test to test Internet connectivity of the trial device.Details associated with some embodiments of these tests are providedabove.

At 905, the test results are processed. In the event of a test failure,various troubleshooting steps may be taken automatically (by CMM 150) ormay be proposed to the customer (e.g., as described above). The resultsof each of the tests are stored within the diagnostics database 275 atthe Control Center 280 (assuming that network connectivity to theControl Center 280 exists).

At step 906, the prospective customer/developer is automaticallydirected to the Control Center Website 250 for a tour of the ControlCenter. Some embodiments of the Web-based GUI are described above withrespect to FIGS. 7 a-c. Finally, at step 907, the wireless device datais provided to the sales management team at the Control Center 280 whereit may be used to manage data of prospective customers. One embodimentof a Web-based GUI for providing this information to the salesmanagement team is described above with respect to FIG. 8.

In one embodiment, the Web server platform used to implement theWeb-based embodiments of the invention is an Apache Tomcat web serverrunning on Linux with software programmed in Java using an Oracledatabase.

Embodiments of the invention may include various steps as set forthabove. The steps may be embodied in machine-executable instructionswhich cause a general-purpose or special-purpose processor to performcertain steps. Alternatively, these steps may be performed by specifichardware components that contain hardwired logic for performing thesteps, or by any combination of programmed computer components andcustom hardware components.

Elements of the present invention may also be provided as amachine-readable medium for storing the machine-executable instructions.The machine-readable medium may include, but is not limited to, floppydiskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs,RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media orother type of media/machine-readable medium suitable for storingelectronic instructions. For example, the present invention may bedownloaded as a computer program which may be transferred from a remotecomputer (e.g., a server) to a requesting computer (e.g., a client) byway of data signals embodied in a carrier wave or other propagationmedium via a communication link (e.g., a modem or network connection).

Throughout the foregoing description, for the purposes of explanation,numerous specific details were set forth in order to provide a thoroughunderstanding of the invention. It will be apparent, however, to oneskilled in the art that the invention may be practiced without some ofthese specific details. For example, it will be readily apparent tothose of skill in the art that the functional modules such as wizardsand other logic described herein may be implemented as software,hardware or any combination thereof. Accordingly, the scope and spiritof the invention should be judged in terms of the claims which follow.

What is claimed is:
 1. A system comprising a control center for managingmobile wireless devices in a wireless network comprising: a processor; aradio receiver and transmitter unit; and a memory coupled with theprocessor, wherein the memory is configured to provide the processorwith instructions which when executed cause the processor to:predetermine an aggressive mobile wireless device based on a search ofhistorical data utilizing an identifier; retrieve at least one data logfrom at least one network element comprising at least one of adiagnostic device, a Home Location Register (HLR), a Mobile SwitchingCenter (MSC), a Gateway GPRS Support Node (GGSN), a Serving GPRS SupportNode (SGSN), a Short Message Service Center (SMSC), a signal transferpoint (STP) node, and a Remote Authentication Dial In User Service(RADIUS) server by utilizing the identifier; identify aggressivebehavior data contained in the at least one data log utilizing theidentifier; verify aggressive behavior exhibited by the aggressivemobile wireless device by analyzing the aggressive behavior data;determine a rule set to modify the aggressive behavior, wherein the ruleset comprises logic to generate a provisioning instruction to provisionthe aggressive mobile wireless device or the at least one networkelement to modify the aggressive behavior of the aggressive mobilewireless device; transmit the provisioning instruction to the aggressivemobile wireless device or the at least one network element; retrieve atleast one subsequent data log generated by the at least one networkelement and determine if the aggressive behavior persists.